VB Script现学现用

这几天需要实现一个报表自动化的功能,用到批处理BAT和VBS的知识,属于现学现用。各种谷歌百度。都说好记性不如烂笔头,我打算花一篇的篇幅来记录用到的VB Script知识,另外用一篇的篇幅来记录用到的BAT批处理知识。希望可以积少成多。
(注意:VBS跟VBA不是一个概念,VBA只有在开启Excel的时候才能运行。)

dim user_id, yyyymm, to_dte_       '定义变量
user_id = wscript.arguments(0)     '接收批处理传过来的第一个参数
CAP_user_id = Ucase(user_id)       '转换成大写
Select Case Mid(yyyymm,5,2)        'Select/Case的用法  字符串截取的方法                                         
Case "01"   
    ' do something here  
Case "02"                          'If-Then的用法,闰年的判断方法,=,<>,Mod的用法
  If (Mid(yyyymm,1,4) Mod 4=0) And (Mid(yyyymm,1,4) Mod 100<>0) Or (Mid(yyyymm,1,4) Mod 400=0) Then
   to_dte = yyyymm &"29"           '字符串拼接的用法
  else
   to_dte = yyyymm &"28"                 
  End If
Case "03" 
  ' do something here
Case "04" 
End Select 
if Weekday(to_dte)="7" Then        '判断任意一天是星期几的用法                             
  ' do something here
  End if
VBS替换text.txt文本中所有"AAAA"字符串为“BBBB"的方法
Set fso = Wscript.CreateObject("Scripting.FileSystemObject")
set f=fso.opentextfile("text.txt")
s=replace(f.readall,"AAAA","BBBB")
f.close
set f=fso.opentextfile("newtext.txt",2,true)
f.write s
f.close
VBS中提示框的用法
MsgBox "Error"    或者
WScript.Echo
VBS下取得当前运行脚本所在的当前目录的办法
set ws=createobject("wscript.shell")
WScript.Echo ws.currentdirectory
VBS中判断文件是否存在以及VBS移动、删除文件的用法
Set objFSO = Wscript.CreateObject("Scripting.FileSystemObject")
Const OverwriteExisting=True
my_file=ws.currentdirectory &"\my_file.txt"
my_file_fullpath =ws.currentdirectory & "\my_file.txt"
If objFSO.FileExists (my_file) Then               '判断文件存在 
  If objFSO.FileExists (my_file_fullpath) Then   
    objFSO.DeleteFile(my_file_fullpath)           '删除文件
   End If 
  objFSO.MoveFile my_file, my_file_fullpath       '移动文件
End If

下面是VBS操作excel的笔记

Set objExcel = CreateObject("Excel.Application")   '创建 excel 对象                               
If (Err.Number <> 0) Then
    Wscript.Echo "Excel application not found."
    Wscript.Quit
End If 
objExcel.Visible = True                            '设置excel可见
Set objBook = objExcel.Workbooks.Add()             '添加excel 工作簿
Set objSheet1= objBook.Sheets("Sheet1")
objSheet1.name="NEW_SHEET1"                        '重命名sheet(字符串拼接,'&')
objSheet2.name="NEW_SHEET2"
objSheet3.name="NEW_SHEET3"
objSheet3.Activate                                 '设置Sheet3为当前编辑的活动sheet
objExcel.Range("A3:E20").Select                    '将A3:E20之间的数字类型当成文本类型显示
objExcel.Selection.NumberFormat = "@"
objExcel.Range("A1:E2").Interior.Color = RGB(220,230,241)  '设置区域内单元格底色(RGB) 
With objExcel.ActiveWindow                         '(Freeze)固定首行和首列            
        .SplitColumn = 0
        .SplitRow = 1
End With
objExcel.Range("A3").Select                        '(Freeze)固定前面两行
objExcel.ActiveWindow.FreezePanes = True       
objExcel.Range("A1:B1").Select                     '单元格A1:B1合并
objExcel.Selection.MergeCells = True            
objExcel.Range("A1:B1").Select                     '字体加粗
objExcel.Selection.Font.Bold = True 
objExcel.Cells(1, 1).Value = "NEW_VALUE"           '单元格赋值
objExcel.Columns("A:A").ColumnWidth = 13.57        '设置整列宽  
objExcel.Columns("B:B").ColumnWidth = 15.71      
objExcel.Columns("G:G").Select                     '设置G列显示值的精度
objExcel.Selection.NumberFormat = "0.000000000"
objExcel.Rows("1:1").Select                        '首行显示筛选条件              
objExcel.Selection.AutoFilter
objExcel.ActiveWindow.ScrollColumn = 1             '让鼠标回到最左边
VBS实现对Excel的列自动填充
Const xlFillDefault = 0                        
objExcel.Range("H2").Select
objExcel.ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC[-1],Dict!R3C4:R227C5,2,FALSE)"        '这里以VLOOKUP公式举例,可以是任意公式
objExcel.Range("H2").AutoFill objExcel.Range("H2:H" &itotalline), xlFillDefault
VBS实现从外部text文件导入数据到当前sheet
Dim objFSO, objFile, l, aline, irow, icol, source_text    
Set objFSO  = CreateObject("Scripting.FileSystemObject")
source_text ="Source_feed_file.txt"
Set objFile = objFSO.OpenTextFile(source_text, ForReading)
irow= 2
While Not objFile.AtEndOfStream
        l = objFile.ReadLine 
        icol =1     
        aline = Split(l,";")                         'source文件是以”;"分隔的 
        Do Until icol > Ubound(aline)+1     
          objSheet.Cells(irow, icol) = aline(icol-1)      
          icol = icol + 1         
         Loop  
  irow = irow + 1
Wend
保存excel到当前目录,关闭并退出excel
objBook.SaveAs(ws.currentdirectory &"\NEW_EXCEL.xlsx") 
objBook.Close
objExcel.Quit

Comments !